package Dominio.Entidades;

import java.io.Serializable;

public class Jugador  implements Serializable, Comparable<Jugador> {

    // Atributos
    private String nombre;
    private String alias;
    private int edad;
    private int ranking;

    //Contructor por defecto
    public Jugador() {
//        this.setNombre("Sin nombre");
//        this.setAlias("Sin alias");
//        this.setEdad(0);
    }

    //Contructor con parametros
    public Jugador(String pNombre, String pAlias, int pEdad) {
        this.setNombre(pNombre);
        this.setAlias(pAlias);
        this.setEdad(pEdad);
    }

    //Métodos accesores y modificadores
    public void setNombre(String pNombre) {
        this.nombre = pNombre;
    }

    public void setAlias(String pAlias) {
        this.alias = pAlias;
    }

    public void setEdad(int pEdad) {
        this.edad = pEdad;
    }

    public String getNombre() {
        return this.nombre;
    }

    public String getAlias() {
        return this.alias;
    }

    public long getEdad() {
        return this.edad;
    }

    public int getRanking() {
        return this.ranking;
    }

    public void setRanking(int pRanking) {
        this.ranking = pRanking;
    }

    //Impresión del socio
    @Override
    public String toString() {
        //return String.format("Alias: [%s] Nombre: [%s] [Ranking: %s] \n", this.getAlias(), this.getNombre(), this.ranking);
            return String.format("Alias:"+this.getAlias()+"  Nombre:" + this.getNombre()+"  Edad:" +this.getEdad()+ "  Ranking"+ this.getRanking());

    }

    //Se supone que el nombre es único, por lo tanto identifica al socio
    //por eso se utiliza para la comparación.
    @Override
    public boolean equals(Object obj) {
        return this.getAlias().equals(((Jugador) obj).getAlias());
    }

    @Override
    public int compareTo(Jugador o) {
        return o.getRanking() - this.getRanking();
    }
}
